{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-19T20:29:17.684456Z",
     "start_time": "2020-05-19T20:29:08.517272Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "\n",
       "require(['notebook/js/codecell'], function(codecell) {\n",
       "  codecell.CodeCell.options_default.highlight_modes[\n",
       "      'magic_text/x-csrc'] = {'reg':[/^%%microblaze/]};\n",
       "  Jupyter.notebook.events.one('kernel_ready.Kernel', function(){\n",
       "      Jupyter.notebook.get_cells().map(function(cell){\n",
       "          if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;\n",
       "  });\n",
       "});\n"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the len of input_buffer:1048576\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f875bd080>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from pynq import Overlay\n",
    "import time\n",
    "from pynq import Xlnk\n",
    "import numpy as np\n",
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "from ipywidgets import *\n",
    "\n",
    "\n",
    "xlnk = Xlnk()\n",
    "dma_loop = Overlay(\"./data/4.DMA_Speed_T.bit\")\n",
    "\n",
    "\n",
    "\n",
    "data_size = 1024*1024\n",
    "input_buffer = xlnk.cma_array(shape=(data_size,), dtype=np.uint64)\n",
    "output_buffer = xlnk.cma_array(shape=(data_size,), dtype=np.uint64)\n",
    "raw_input = ( (np.sin(np.linspace(0, 4*np.pi, data_size)) + 1) * 65536 ).astype(dtype=np.uint64)\n",
    "\n",
    "for i in range(data_size):\n",
    "    input_buffer[i] = raw_input[i]\n",
    "\n",
    "\n",
    "\n",
    "plt.plot(range(len(input_buffer)), input_buffer)\n",
    "print(\"the len of input_buffer:{}\".format(len(input_buffer)))\n",
    "\n",
    "dma_send = dma_loop.axi_dma_0.sendchannel\n",
    "dma_recv = dma_loop.axi_dma_0.recvchannel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-19T20:29:33.299471Z",
     "start_time": "2020-05-19T20:29:33.278210Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DMA sendchannel state is idle:False\n",
      "DMA sendchannel state is running:True\n",
      "DMA recvchannel state is idle:False\n",
      "DM1 recvchannel state is running:True\n"
     ]
    }
   ],
   "source": [
    "print(\"DMA sendchannel state is idle:{}\".format(dma_send.idle))\n",
    "print(\"DMA sendchannel state is running:{}\".format(dma_send.running))\n",
    "print(\"DMA recvchannel state is idle:{}\".format(dma_recv.idle))\n",
    "print(\"DM1 recvchannel state is running:{}\".format(dma_recv.running))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-19T20:29:51.079047Z",
     "start_time": "2020-05-19T20:29:50.053844Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "DMA数据发送或接收的速度为1023.8781883201666MB/s\n"
     ]
    }
   ],
   "source": [
    "start = time.time()\n",
    "for i in range(128):\n",
    "    \n",
    "    dma_send.transfer(input_buffer)\n",
    "    dma_recv.transfer(output_buffer)\n",
    "    dma_send.wait()\n",
    "    dma_recv.wait()\n",
    "\n",
    "end = time.time()\n",
    "\n",
    "print(\"DMA数据发送或接收的速度为{}MB/s\".format(1024 / (end - start)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "ExecuteTime": {
     "end_time": "2020-05-19T20:30:08.311935Z",
     "start_time": "2020-05-19T20:30:04.809801Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "the len of input_buffer:1048576\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f9d0f8ef0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(range(len(output_buffer)), output_buffer)\n",
    "print(\"the len of input_buffer:{}\".format(len(output_buffer)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
